package com.nl.idempotent.dao;

/**
 * 幂等操作接口.
 *
 * @author breggor
 */
public interface IdempotentDao {

    /**
     * 幂等开始:记录幂等业务属性.
     *
     * @param id     业务id
     * @param module 模块名
     * @return boolean 是否成功
     */
    boolean begin(String id, String module);

    /**
     * 幂等结束:进行业务数据保存.
     *
     * @param id     业务id
     * @param result 模块名
     */
    void end(String id, String result);

    /**
     * 加载已处理的业务数据.
     *
     * @param id 业务id
     * @return 返回业务数据
     */
    String load(String id);

    /**
     * 是否执行过.
     *
     * @param id 业务id
     * @return 是否执行过
     */
    boolean isProcessed(String id);
}
